#ifndef SHAPE_H
#define SHAPE_H

#include "Vector.h"
#include <Vector>

class Shape
{
protected:
	std::vector<Position> m_edges; // Lijnen
	std::vector<Vector> m_vertexes; // Hoekpunten
	std::vector<Vector> m_faces; // Vlakken

public:
	enum Type {
		CUBE,
		LINE,
		POLYGON,
		SPHERE
	};

	virtual Type getType()  = 0;

	Shape()
	{
	}

	Shape( const std::vector<Position>& points )
	{
		m_edges = points;
	}

	void addEdge( const Position& pos )
	{
		m_edges.push_back( pos );
	}

	void addVertex( const Vector& v )
	{
		m_vertexes.push_back( v );
	}

	std::vector<Position>& getEdges() { return m_edges; }
	std::vector<Vector>& getVertexes() { return m_vertexes; }
	std::vector<Vector>& getFaces() { return m_faces; }
};

#endif